package com.campus.campusdelivery.service;

import com.campus.campusdelivery.dto.CreateOrderRequest;
import com.campus.campusdelivery.dto.OrderDto;
import com.campus.campusdelivery.dto.StatsDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface OrderService {
    
    OrderDto createOrder(Long userId, CreateOrderRequest request);
    
    OrderDto getOrderById(Long id);
    
    Page<OrderDto> getOrdersByUserId(Long userId, Pageable pageable);
    
    Page<OrderDto> getOrdersByUserId(Long userId, Pageable pageable, String status);
    
    Page<OrderDto> getOrdersByMerchantId(Long merchantId, Pageable pageable);
    
    Page<OrderDto> getOrdersByDeliveryPersonId(Long deliveryPersonId, Pageable pageable);
    
    Page<OrderDto> getPendingOrders(Pageable pageable);
    
    void updateOrderStatus(Long id, String status);
    
    void cancelOrder(Long id);
    
    void payOrder(Long id);
    
    void acceptOrder(Long id);
    
    void startDelivery(Long id);
    
    void completeDelivery(Long id);
    
    StatsDto getTodayStats();
    
    List<OrderDto> getRecentOrders(int limit);
}
